:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::------:
:::::::::::::::::::::::::::::::::::::::-==++==-::::::::::::---------=-----------
::::--:::::::::::::::::---::::::::--+++*########*==-:::::::-------====---=-----:
--===--::::::::::::-------::::::-=*##%%%########%%%#+-:::::-------====---=--=---
======-------:::::--------::::-+*#%##%%%%#%%%%%%%@@@@%-::::-----======-===--=---
=====+=====+==---------------+#%#%%%%%%%%%%%%@@%%@@@@@%::::----=======-===--=---
===++++++++++===---:::----==+#%%######%%%%@@@@@@@@@@@@@*:::----====+=======-=---
===+=+++++++++==--::::----=+####****++*#%%%@@@@@@@@@@@@%:::----===++======------
========++++++==----------=*%%*+++=====*%%%@@@@@@@@@@@@%:::----===++=====-----::
----=--===+++++=========--=*%%+--=----=+#%@@@@@%%@@@@@@%-::---====+====------:::
---------==++++++======----*#+-------===++##%%%%@@@@@@@@=::---=========--------:
----------==++*+++====-----=+:-=+++=-----==++*##%@@@@@@@+::----===++====--------
----------====++++===-----:-=:-==**==--=+*##*####%%@@@@%=::----===+*+++====-=---
::::::-------========----::--:---++=--=+****#######@@@@+:::----===+++++===------
:::::::::::----=====----:::-::::----:-=++==+**#**##@%*#=:::-----===+=+==----::::
::::::::::::::--===-----:::::::::-:::-=++====+++*#%%#*+::::::---===+==----------
::::::::::::::----------::::::::----:-=++=====++*#%#**-::::::----=====---------:
:::::::::::::::--:::---::::::::--:---=***+=-==+**##*+-::::::::----===---------::
-------::::::::::::::::::::::::------=+++++=++****:::::::::::::---==---------:::
-=====-::::::::::::::::::::::::----===++**+++***+-::::::::::::::-------------:::
=++*+=-:::::::::::::::::::::::::-:--==+***+****+-:::::::::::::::-------------:::
++***+-::::::::::::::::::::::::::----==+***###*+::::::::::::::::---------------:
*****+=-----==----------::::::=-----==++**##%%@@*-::::::::::::::---===---------:
*****+===--==+*+++====--:::::-%=---=+**#%%@@@@@@@*--::::::::::::--====--==-----:
*#**++==-----======-----:::::=#+-=+*#%@@@@@@@@@@@%*-::::::::::::--=====--=-----:
###*++==--::::------------==+#%%##%%%%@@@@@@@@@@%%%*-::::::::::---=====-==--=--:
###*++==--:::::------==++++*%%##%%%%%%@@@@%%%%%#%%#%#+=::::::::--=========--=--:
*##*+++===-------==++***+*#@###%@@@@@@@%%######%%######*=::::---=======-----=---
+**+++++++++++=+++*****+*%@%#%@@@@%@@%%#####%%%###########*=---========-==--=--:
===+++=++++++++++*****+*%@%##%@@%%%%@%#####%@%##############***++==+===-===-=-=-
---=======---++++*+**+*#@%###@@@%%%%####**%@###############%%%@#++++=======-----
::-------:::-++++++*+*#@%####@@%%%%#*****%%#*******#######%%%%@#++++======------
:::-::::::::-+++++***#@%##*#%@@%%#*****#%#***********####%%%%%@%+++**++++=====--
::::::::::::-+++++*+#@%%####%@@%#*****##*+++++****#*######%%%@@%++*#***++++===--
::::::::::::==+++++*%%%%###%@@%#*****+=--------+#*########%%%%@%*++##*****++++=-
::::::::::::+=++++*%@%%####%@@#****##**********###########%%%%@%*++###***+*+++==
:::::::::::-+=++++#@@%%####@@#****##*****#*****############%%%@%*++##*****++++==
:::::::::::=+++++*%@%%%###%@#****##******##****##%#########%%%@@*++****++++==+==
:::::------=++++*#@@%%%###%#****#*******####**##%%#########%%%@@*++++++=========
:::::--==--+++***%@@%%#####****#******##########@%#########%%%@@*++=====--------
::::::----=*++**#@@@%%####***#%****#########*##%@##########%%@@@*++=====--------
::::::::::=*++**%@@@%####***#%#***############%@@#########%%%@@@*++=====--------
::::::::::+*++**@@@%####***#%#****############%@%##*######%%%%@@*++======-------